home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 January / enter-2004-01.iso / files / maxima-5.9.0.exe / {app} / share / maxima / 5.9.0 / src / transf.lisp < prev    next >
Encoding:
Text File  |  2003-02-09  |  2.8 KB  |  82 lines

  1. ;;; -*-  Mode: Lisp; Package: Maxima; Syntax: Common-Lisp; Base: 10 -*- ;;;;
  2. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  3. ;;;     The data in this file contains enhancments.                    ;;;;;
  4. ;;;                                                                    ;;;;;
  5. ;;;  Copyright (c) 1984,1987 by William Schelter,University of Texas   ;;;;;
  6. ;;;     All rights reserved                                            ;;;;;
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  9. ;;;       (c) Copyright 1980 Massachusetts Institute of Technology       ;;;
  10. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  11.  
  12. (in-package "MAXIMA")
  13. ;;; TRANSLATION PROPERTIES FOR MACSYMA OPERATORS AND FUNCTIONS.
  14.  
  15. ;;; This file is for list and array manipulation optimizations.
  16.  
  17. (macsyma-module transf)
  18.  
  19.  
  20. (TRANSL-MODULE TRANSF)
  21.  
  22. ;;; some floating point translations. with tricks.
  23.  
  24. (DEF%TR %LOG (FORM) 
  25.   (LET   (ARG)
  26.     (SETQ ARG (TRANSLATE (CADR FORM)))
  27.     (COND ((AND (EQ (CAR ARG) '$FLOAT) (GET (CAAR FORM) 'LISP-FUNCTION-TO-USE))
  28.        `($FLOAT ,(GET (CAAR FORM) 'LISP-FUNCTION-TO-USE) ,(CDR ARG)))
  29.       (T `($ANY SIMPLIFY (LIST ',(LIST (CAAR FORM)) ,(CDR ARG)))))))
  30.  
  31. (DEF-SAME%TR %SIN %LOG)
  32. (DEF-SAME%TR %COS %LOG)
  33. (DEF-SAME%TR %TAN %LOG)
  34. (DEF-SAME%TR %COT %LOG)
  35. (DEF-SAME%TR %CSC %LOG)
  36. (DEF-SAME%TR %SEC %LOG)
  37. (DEF-SAME%TR %ACOT %LOG)
  38. (DEF-SAME%TR %SINH %LOG)
  39. (DEF-SAME%TR %COSH %LOG)
  40. (DEF-SAME%TR %TANH %LOG)
  41. (DEF-SAME%TR %COTH %LOG)
  42. (DEF-SAME%TR %CSCH %LOG)
  43. (DEF-SAME%TR %SECH %LOG)
  44. (DEF-SAME%TR %ASINH %LOG)
  45. (DEF-SAME%TR %ACSCH %LOG)
  46. (DEF-SAME%TR %ERF %LOG)
  47.  
  48. (comment not used
  49. ; defsubr1 is also obsolete. see DEF-PROCEDURE-PROPERTY.
  50. (DEFsubr1 TRANSLATE-$NUMBER (FORM) 
  51.   (LET   (ARG)
  52.     (SETQ ARG (TRANSLATE (CADR FORM)))
  53.     (IF (AND (COVERS '$NUMBER (CAR ARG)) (GET (CAAR FORM) 'LISP-FUNCTION-TO-USE))
  54.     (LIST (CAR ARG) (GET (CAAR FORM) 'LISP-FUNCTION-TO-USE) (CDR ARG))
  55.     (CONS (CAR ARG) `(SIMPLIFY (LIST ',(LIST (CAAR FORM)) ,(CDR ARG))))))))
  56.  
  57.  
  58. (DEFMVAR $TR_FLOAT_CAN_BRANCH_COMPLEX T
  59.      "States wether the arc functions might return complex
  60.      results. The arc functions are SQRT,LOG,ACOS, etc.
  61.      e.g. When it is TRUE then ACOS(X) will be of mode ANY even if X is
  62.      of mode FLOAT. When FALSE then ACOS(X) will be of mode FLOAT
  63.      if and only if X is of mode FLOAT.")
  64.  
  65. (def%TR %ACOS (form)
  66.   (LET ((arg (translate (cadr form))))
  67.     (cond ((and (eq (car arg) '$float)
  68.         (get (caar form) 'lisp-function-to-use))
  69.        `(,(cond ($TR_FLOAT_CAN_BRANCH_COMPLEX
  70.              '$ANY)
  71.             (T '$FLOAT))
  72.          . (,(GET (CAAR FORM) 'LISP-FUNCTION-TO-USE)
  73.         ,(CDR ARG))))
  74.       (T
  75.        `($ANY . (SIMPLIFY (LIST '(,(CAAR FORM)) ,(CDR ARG))))))))
  76.  
  77. (DEF-SAME%TR %ASIN %ACOS)
  78. (DEF-SAME%TR %ASEC %ACOS)
  79. (DEF-SAME%TR %ASEC %ACOS)
  80. (DEF-SAME%TR %ACSC %ACOS)
  81.  
  82.